package com.cc.service.inserttable;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.UUID;
import java.util.List;
import java.util.stream.Collectors;

import com.cc.infrastructure.inter.inserttable.InserttableInter;
import com.cc.web.vo.InserttableVo;
import com.cc.infrastructure.db.InserttableDb;
import com.cc.pojo.dto.InserttableDto;
import com.cc.infrastructure.special.dto.InserttableDo;

/**
 * @author C.c
 **/
@Service
public class InserttableService {
  @Resource
  private InserttableInter inserttableInter;

  /**
   * 分页
   *
   * @author C.c
   **/
  public Page<InserttableVo> query(String name, int pageNum, int pageSize) {
    Page<InserttableDo> inserttableDoDos = inserttableInter.query(name, pageNum, pageSize);
    List<InserttableVo> collect = inserttableDoDos.stream().map(InserttableVo::convertInserttableVoByInserttableDo).collect(Collectors.toList());
    return new PageImpl<>(collect, inserttableDoDos.getPageable(), inserttableDoDos.getTotalElements());
  }

  /**
   * 新增
   *
   * @author C.c
   **/
  @Transactional(rollbackFor = Exception.class)
  public boolean add(InserttableDto inserttableDto) {
    InserttableDb inserttabledb = InserttableDto.convertInserttableDbByInserttableDto(inserttableDto);
    inserttabledb.setId(UUID.randomUUID().toString());
    inserttableInter.save(inserttabledb);
    return true;
  }

  /**
   * 删除
   *
   * @param id
   * @return boolean
   * @author C.c
   **/
  public boolean delete(String id) {
    inserttableInter.deleteById(id);
    return true;
  }

  /**
   * 修改
   *
   * @return boolean
   * @author C.c
   **/
  @Transactional(rollbackFor = Exception.class)
  public boolean edit(InserttableDto inserttableDto) {
    InserttableDb inserttabledb = InserttableDto.convertInserttableDbByInserttableDto(inserttableDto);
    inserttableInter.save(inserttabledb);
    return true;
  }

  /**
   * 查询单个
   *
   * @param id 唯一标识
   * @author C.c
   **/
  public InserttableVo view(String id) {
    InserttableDb inserttabledb = inserttableInter.findById(id).orElse(null);
    return InserttableVo.convertInserttableVoByInserttableDo(inserttabledb);
  }
}